.\" Copyright (c) 2003 Maksim Yevmenkin <m_evmenkin@yahoo.com>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: ubtbcmfw.4,v 1.3 2003/05/21 19:37:35 max Exp $
.\"
.Dd November 22, 2006
.Dt UBTBCMFW 4
.Os
.Sh NAME
.Nm ubtbcmfw
.Nd Firmware driver for Broadcom BCM2033 chip based Bluetooth USB devices
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device ubtbcmfw"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
ubtbcmfw_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
is a firmware driver for Broadcom BCM2033 chip based Bluetooth USB devices.
It provides minimal access to the parts of the device required to download
firmware.
.Pp
The
.Nm
driver creates three fixed endpoint device nodes.
.Pp
The control transfers can only happen on the control endpoint which
is always endpoint 0.
Control requests are issued by
.Xr ioctl 2
calls.
.Pp
Only incoming transfers are supported on an interrupt endpoint.
To perform I/O on an interrupt endpoint,
.Xr read 2
should be used.
All I/O operations on an interrupt endpoint are unbuffered.
Interrupt endpoint is always endpoint 1.
.Pp
Only outgoing bulk transfers are supported on a bulk endpoint.
To perform I/O on a bulk endpoint,
.Xr write 2
should be used.
All I/O operations on a bulk endpoint are unbuffered.
Outgoing bulk endpoint is always endpoint 2.
.Pp
The control endpoint (endpoint 0) handles the following
.Xr ioctl 2
calls:
.Bl -tag -width indent
.It Dv USB_GET_DEVICE_DESC Pq Vt usb_device_descriptor_t
Return the device descriptor.
.El
.Sh FILES
.Bl -tag -width ".Pa /dev/ubtbcmfw Ns Ar N Ns Pa \&. Ns Ar EE" -compact
.It Pa /dev/ubtbcmfw Ns Ar N Ns Pa \&. Ns Ar EE
Endpoint
.Ar EE
of device
.Ar N .
.El
.Sh SEE ALSO
.Xr ng_ubt 4 ,
.Xr ugen 4 ,
.Xr usb 4 ,
.Xr bcmfw 8
.Sh HISTORY
The
.Nm
driver was implemented in
.Fx 5.0 .
.Sh AUTHORS
.An Maksim Yevmenkin Aq Mt m_evmenkin@yahoo.com
.Sh BUGS
Most likely.
Please report if found.
